Denne posten beskriver hvordan man kan lage en figur over en variabel der man tar antall/prosent av hver kategori som også inkluderer missing.
Noen ganger vil vi vise deskriptiv statistikk over alle nivåene som finnes på en variabel. Et vanlig eksempel vil i surveyer der vi har svar på et spørsmål der det har vært ulike svaralternativer. R har noen ganger for vane å “glemme” missing når vi gjør dette. Det kan være problematisk hvis det er store mengder missing eller når vi er bekymra for systematisk missing. Her kommer kode som forklarer hva man kan gjøre i slike tilfeller.
Første skritt er som vanlig å laste inn nyttige pakker. Jeg har forsøkt å bruke kun tidyverse for tilrettelgging av data og ggplot2 for å lage figuren. Jeg bruker også konsekvent pipe: %>% fordi det er lettere å lese.
For at ggplot skal gidde å plotte missing må vi gjøre det til en variabel. Det kan vi gjøre ved å omkode variabelen til character med as.character() og så legge kalle de som er NA for “missing”.
#Vi gjør det til character:
hei$value_na <-hei$value %>%as.character()
# Vi lager en bokstavverdi for missing:
hei$value_na[is.na(hei$value)]<- "Missing"
#Hvis vi ikke gjør dette vil missing bli utelatt av ggplot
Etter at vi har gjort dette mangler det fortsatt informasjon om rekkefølgen på variabelen. Siden vi har en variabel her med 1-10 så vil 1 og 10 komme etter hverandre om ggplot bruker alfabetisk rekkefølge. For å løse dette koder vi om på nytt til en faktor og sier til R hva som er nivåene. I dette tilfelle er nivåene 1-10 og så missing.
For å kunne lage en figur må vi først regne ut antallet per nivå. Dette er enkelt med tidyverse. Vi grupperer først etter nivå på variabelen og så bruker vi summarize() og n()
#plott med antall:
hei %>% #Datasettet
group_by(value_na) %>% #Grupperer etter variabelen vi er interessert i
summarize(Antall=n())
# A tibble: 11 x 2
value_na Antall
<fct> <int>
1 1 84
2 2 81
3 3 109
4 4 98
5 5 102
6 6 95
7 7 82
8 8 90
9 9 98
10 10 79
11 Missing 82
Da kan vi bare koble den samme koden inn i ggplot i en lang pipe rekke:
#plott med antall:
#Datasettet
hei %>%
#Grupperer etter variabelen vi er interessert i
group_by(value_na) %>%
#oppsummerer ved å ta hvor mange det er av hver verdi av gruppa (value)
summarize(Antall=n()) %>% #
#Lager et ggplot og Bruker fill for å få farger:
ggplot(aes(x=value_na,y=Antall,fill=value_na))+
#Stolper
geom_col() +
#Aksenes navn
labs(x="Verdi",y="Antall", title= "Antall")
Hvis vi ønsker å ha prosentandelen istedenfor putter vi inn en utregning av prosentandelen isteden.
hei %>%
#Grupperer etter variabelen vi er interessert i
group_by(value_na) %>%
#oppsummerer ved å ta hvor mange det er av hver verdi av gruppa (value)
summarize(Antall=n()) %>% #
#Deler på totalen slik at det blir prosent
summarize(value_na,Antall,Prosent=Antall/sum(Antall)*100)
# A tibble: 11 x 3
value_na Antall Prosent
<fct> <int> <dbl>
1 1 84 8.4
2 2 81 8.1
3 3 109 10.9
4 4 98 9.8
5 5 102 10.2
6 6 95 9.5
7 7 82 8.2
8 8 90 9
9 9 98 9.8
10 10 79 7.9
11 Missing 82 8.2
Så setter vi dette inn i plottet
#Plott med prosent
hei %>%
#Grupperer etter variabelen vi er interessert i
group_by(value_na) %>%
#oppsummerer ved å ta hvor mange det er av hver verdi av gruppa (value)
summarize(Antall=n()) %>% #
#Deler på totalen slik at det blir prosent
summarize(value_na,Antall,Prosent=Antall/sum(Antall)*100) %>%
#Lager et ggplot og Bruker fill for å få farger:
ggplot(aes(x=value_na,y=Prosent,fill=value_na))+
#Stolper
geom_col() +#Stolper
#Sier hva aksene skal hete
labs(x="Verdi",y="Prosent",title="Prosentandeler")#
For attribution, please cite this work as
Solheim (2021, Nov. 3). Solheim: Figur med missing. Retrieved from https://www.oyvindsolheim.com/code/Missing i figurer/
BibTeX citation
@misc{solheim2021figur, author = {Solheim, Øyvind Bugge}, title = {Solheim: Figur med missing}, url = {https://www.oyvindsolheim.com/code/Missing i figurer/}, year = {2021} }